<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>2.天气案例_监视属性</title>
		<style>
			img{
				width: 100px;
			}
		</style>
		<!-- 引入Vue -->
		<script type="text/javascript" src="../js/vue.js"></script>
	</head>
	<body>
		<!-- 
				监视属性watch：
					1.当被监视的属性变化时, 回调函数（handler）自动调用, 回调函数中做什么，要看具体需求。
					2.监视的属性必须存在，才能进行监视！！
					3.监视的两种写法：
								(1).new Vue时传入watch配置
								(2).通过vm.$watch监视（了解即可）
					4.被监视的可以是：属性（data），也可以是计算属性（computed）
		 -->
		<!-- 准备好一个容器-->
		<div id="demo">
			<h2>今天天气很：{{weatherText}}</h2>
			<img v-bind:src="url"> <br>
			<button @click="changeWeather">切换天气</button>
		</div>

		<script type="text/javascript">
			//阻止 vue 在启动时生成生产提示。
			Vue.config.productionTip = false

			let vm = new Vue({
				el:'#demo',
				data:{
					isHot:false,
					url:'https://s3.ax1x.com/2020/12/13/reCaqg.jpg',
				},
				computed:{
					weatherText(){
						return this.isHot ? '炎热' : '凉爽'
					}
				},
				methods:{
					changeWeather(){
						this.isHot = !this.isHot
					}
				},
				//watch代表要配置监视
				watch:{
					//监视的属性是isHot（属性）
					/* isHot:{
						//若isHot的值发生变化，那么handler就会自动被调用
						handler(newValue,oldValue){
							// console.log('isHot发生变化了',newValue,oldValue)
							if(newValue) this.url = 'https://s3.ax1x.com/2020/12/13/reC1IA.jpg'
							else this.url = 'https://s3.ax1x.com/2020/12/13/reCaqg.jpg'
						}
					} */

					//监视的属性是weatherText（计算属性）
					weatherText:{
						handler(value){
							// console.log('weatherText改变了',newValue,oldValue)
							if(value === '炎热') this.url = 'https://s3.ax1x.com/2020/12/13/reC1IA.jpg'
							else this.url = 'https://s3.ax1x.com/2020/12/13/reCaqg.jpg'
						}
					}
				}
			})

			//借助vm.$watch实现监视（了解即可，不练习都可以）
			/* vm.$watch('isHot',function(newValue,oldValue){
					// console.log('isHot发生变化了',newValue,oldValue)
					if(newValue) this.url = 'https://s3.ax1x.com/2020/12/13/reC1IA.jpg'
					else this.url = 'https://s3.ax1x.com/2020/12/13/reCaqg.jpg'
			}) */
			
		</script>
	</body>
</html>